package com.roc.admin.application.service;

import com.roc.admin.interfaces.dto.RoleDTO;

import java.util.List;

/**
 * 角色应用服务接口
 */
public interface RoleService {
    
    /**
     * 创建角色
     *
     * @param roleDTO 角色DTO
     * @return 角色ID
     */
    Long createRole(RoleDTO roleDTO);
    
    /**
     * 更新角色
     *
     * @param roleDTO 角色DTO
     * @return 是否成功
     */
    boolean updateRole(RoleDTO roleDTO);
    
    /**
     * 删除角色
     *
     * @param roleId 角色ID
     * @return 是否成功
     */
    boolean deleteRole(Long roleId);
    
    /**
     * 获取角色信息
     *
     * @param roleId 角色ID
     * @return 角色DTO
     */
    RoleDTO getRoleById(Long roleId);
    
    /**
     * 获取角色列表
     *
     * @return 角色DTO列表
     */
    List<RoleDTO> getRoleList();
    
    /**
     * 根据用户ID获取角色列表
     *
     * @param userId 用户ID
     * @return 角色DTO列表
     */
    List<RoleDTO> getRoleListByUserId(Long userId);
    
    /**
     * 分配角色菜单
     *
     * @param roleId  角色ID
     * @param menuIds 菜单ID列表
     * @return 是否成功
     */
    boolean assignMenus(Long roleId, List<Long> menuIds);
    
    /**
     * 分配角色部门
     *
     * @param roleId  角色ID
     * @param deptIds 部门ID列表
     * @return 是否成功
     */
    boolean assignDepts(Long roleId, List<Long> deptIds);
}
